package se.webbzon.boltzmann.battle.strategy.playerstrategy;

import java.awt.Font;
import java.awt.Image;

import se.webbzon.boltzmann.hud.AbstractHudLayout;

public class PSItemPageLayout extends AbstractHudLayout {
	
	// The offset of the frame within the heads-up display
	private final int xOffset, yOffset;
	
	// The number of items to display
	private final int items;
	
	// The horizontal and vertical offset of the item background 
	// within the frame along with the width and height of the 
	// item background
	private final int itemXOffset, itemYOffset, itemWidth, itemHeight;
	
	// The horizontal and vertical offset of the item icon within
	// its background
	private final int iconXOffset, iconYOffset, iconWidth, iconHeight;
	
	// The horizontal spacing between the item icon and the item
	// text and the vertical offset of the text relative to the 
	// icon
	private final int textXSpacing, textYOffset;
	
	// The font of the item text and description text
	private final Font textFont, descriptionFont;
	
	// The images of the item list
	private final Image background, upArrow, downArrow;

	/*============================================================
	Constructors
	============================================================*/

	/** Creates a new player strategy item page layout for the player 
	 * strategy heads-up display. **/
	public PSItemPageLayout(int xOffset, int yOffset, 
							int items, 
							int itemXOffset, int itemYOffset, 
							int itemWidth, int itemHeight, 
							int iconXOffset, int iconYOffset, 
							int iconWidth, int iconHeight,
							int textXSpacing, int textYOffset,
							Font textFont, Font descriptionFont,
							Image background,
							Image upArrow, Image downArrow) {
		this.xOffset = xOffset;
		this.yOffset = yOffset;
		this.items = items;
		this.itemXOffset = itemXOffset;
		this.itemYOffset = itemYOffset;
		this.itemWidth = itemWidth;
		this.itemHeight = itemHeight;
		this.iconXOffset = iconXOffset;
		this.iconYOffset = iconYOffset;
		this.iconWidth = iconWidth;
		this.iconHeight = iconHeight;
		this.textXSpacing = textXSpacing;
		this.textYOffset = textYOffset;
		this.textFont = textFont;
		this.descriptionFont = descriptionFont;
		this.background = background;
		this.upArrow = upArrow;
		this.downArrow = downArrow;
	}
	
	/*============================================================
	Public Methods
	============================================================*/
	
	/** Returns the horizontal offset of the frame within the heads-up display. **/
	public int getXOffset() {
		return xOffset;
	}

	/** Returns the vertical offset of the frame within the heads-up display. **/
	public int getYOffset() {
		return yOffset;
	}

	/** Returns the maximal number of items to display in the frame. **/
	public int getItems() {
		return items;
	}

	/** Returns the horizontal offset of the icon background within the frame. **/
	public int getItemXOffset() {
		return itemXOffset;
	}

	/** Returns the vertical offset of the icon background within the frame. **/
	public int getItemYOffset() {
		return itemYOffset;
	}

	/** Returns the width of the item background. **/
	public int getItemWidth() {
		return itemWidth;
	}

	/** Returns the height of the item background. **/
	public int getItemHeight() {
		return itemHeight;
	}

	/** Returns the horizontal offset of the item icon within the item background. **/
	public int getIconXOffset() {
		return iconXOffset;
	}

	/** Returns the vertical offset of the item icon within the item background. **/
	public int getIconYOffset() {
		return iconYOffset;
	}
	
	/** Returns the width of the item icon. **/
	public int getIconWidth() {
		return iconWidth;
	}
	
	/** Returns the height of the item icon. **/
	public int getIconHeight() {
		return iconHeight;
	}

	/** Returns the horizontal spacing between the item icon and the item text. **/
	public int getTextXSpacing() {
		return textXSpacing;
	}

	/** Returns the vertical offset of item text relative to the item icon. **/
	public int getTextYOffset() {
		return textYOffset;
	}

	/** Returns the font used for print the item text. **/
	public Font getTextFont() {
		return textFont;
	}

	/** Returns the font used for print the item description. **/
	public Font getDescriptionFont() {
		return descriptionFont;
	}

	/** Returns the background image of the item list. **/
	public Image getBackground() {
		return background;
	}
	
	/** Returns the image of the up arrow. **/
	public Image getUpArrow() {
		return upArrow;
	}
	
	/** Returns the image of the down arrow. **/
	public Image getDownArrow() {
		return downArrow;
	}

}
